package com.turing.post.report.util;

import java.util.Date;
import java.util.List;
import javax.ejb.Local;
import javax.ejb.Remote;
import com.turing.post.util.PCPSApplicationException;
import com.turing.post.util.PCPSWebInput;

@Remote
@Local
public interface MerchantDaySettlementDao {
	/**
	 * 创建商户日结汇总记录
	 * 
	 * @param mds
	 * @throws PCPSApplicationException
	 */
	public void insert(MerchantDaySettlement mds)
			throws PCPSApplicationException;

	/**
	 * 修改商户日结汇总记录
	 * 
	 * @param mds
	 * @throws PCPSApplicationException
	 */
	public void update(MerchantDaySettlement mds)
			throws PCPSApplicationException;

	/**
	 * 删除某发卡商某日所有商户的日结数据
	 * 
	 * @param issueCompanyNo
	 *            发卡商号
	 * @param tranDate
	 *            帐务日期
	 */
	public void removeAllMerchantDaySettlementByTranDate(String issueCompanyNo,
			Date tranDate);

	/**
	 * 得到某商户某日的日结数据
	 * 
	 * @param merchantno
	 * @param tranDate
	 */
	public MerchantDaySettlement getMerchantDaySettlementByTranDate_Merchantno(
			String merchantno, Date tranDate);
	
	/**
	 * 得到某日所有有扎帐数据的商户号集合
	 * 
	 * @param tranDate
	 * @return List<String[]>
	 */
	public List<String> getHaveMerchantDaySettlementMerchantno(Date trandate);


	/**
	 * 卡-13：渠道交易充值轧差表 商户名称根据商户编号从map中获取 金额前台除100转化为元
	 * 
	 * @param webInput
	 * @param merchantNo
	 * @param startDate
	 * @param endDate
	 * @param reportType
	 * @return
	 */
	public List<Object[]> getMerchantDaySettlementCountByCondition(
			PCPSWebInput webInput, String merchantNo, String startDate,
			String endDate, String reportType);

	/**
	 * 根据商户号，时间段，得到消费总额
	 * 
	 * @param merchantno
	 * @param startdate
	 * @param enddate
	 * @return
	 */
	public Long getLimitAmountByDate(String merchantno, Date startdate,
			Date enddate);

	/**
	 * 根据商户号，时间段，得到某段时间最后一天之前的消费总额
	 * 
	 * @param merchantno
	 * @param startdate
	 * @param enddate
	 * @return
	 */
	public Long getLimitAmountByDateDecreaseOneDay(String merchantno,
			Date startdate, Date enddate);

	/**
	 * 根据四要素检索商户交易流水统计--MIS
	 * 
	 * @param startTime
	 *            起始日期
	 * @return 商户交易流水对象列表
	 * 
	 */
	public List<MerchantDaySettlement> getMerchantDaySettlementMisTotal(
			PCPSWebInput webInput, String tranTime, String merchantNoStr);

	/**
	 * 根据四要素检索商户交易流水统计--POS
	 * 
	 * @param startTime
	 *            起始日期
	 * @return 商户交易流水对象列表
	 * 
	 */
	public List<MerchantDaySettlement> getMerchantDaySettlementPosTotal(
			PCPSWebInput webInput, String tranTime, String merchantNoStr);

	/**
	 * 根据西邮寄分公司渠道交易汇总表--报表
	 * 
	 * @param merchantno
	 *            商户号
	 * @param startTime
	 *            起始日期
	 * @param endTime
	 *            终止日期
	 * @return 西邮寄分公司渠道交易汇总表对象列表
	 * 
	 */
	public List<Object[]> getMerchantDaySettlementByMerchant(
			PCPSWebInput webInput, String merchantno, String startTime,
			String endTime);

	/**
	 * 根据西邮寄卡交易结算汇总表--报表
	 * 
	 * @param merchantno
	 *            商户号
	 * @param startTime
	 *            起始日期
	 * @param endTime
	 *            终止日期
	 * @return 西邮寄卡交易结算汇总表对象列表 *
	 */
	public List<Object[]> getMerchantDaySettlementSettleAccountsByMerchant(
			PCPSWebInput webInput, String merchantno, String startTime,
			String endTime);
	
	/**
	 * 商户消费情况统计表
	 * @param webInput
	 * @param startDate
	 * @param endDate
	 * @param todayDate
	 * @param merchantNoStr
	 * @return
	 */
	public List<Object[]> getMerchantDaySettlementCountReport (
			PCPSWebInput webInput, String startDate,String endDate, 
			String todayDate,String merchantNoStr);
	
	/**
	 * 根据商户号，时间段，得到某段时间的收入总额
	 * 
	 * @param merchantno
	 * @param startdate
	 * @param enddate
	 * @return
	 */
	
	public Long getAllIncomeByDate(String merchantno, Date startdate,
			Date enddate);
}
